package 一六B;

import java.util.Vector;

/**
 * Created by lenovo on 2017/3/29.
 */
public class q6 {

    public static int count = 0;
    /**
     * 筛选函数
     * @param array
     * @return
     */
    private static boolean check(int[][] array){
        for(int i=0;i<3;i++){
            for(int j =0;j<4;j++){
                //上下连续
                if(i>0 && Math.abs(array[i-1][j]-array[i][j]) == 1){
                    return false;
                }

                if(i<2 && Math.abs(array[i+1][j]-array[i][j]) == 1){
                    return false;
                }

                if(j>0 && Math.abs(array[i][j]-array[i][j-1]) == 1){
                    return false;
                }

                if(j<3 && Math.abs(array[i][j]-array[i][j+1]) == 1){
                    return false;
                }

                if(i>0 && j>0 && Math.abs(array[i][j]-array[i-1][j-1]) == 1){
                    return false;
                }

                if(i<2 && j<3 && Math.abs(array[i][j]-array[i+1][j+1]) == 1){
                    return false;
                }

                if(i>0 && j<3 && Math.abs(array[i][j]-array[i-1][j+1]) == 1){
                    return false;
                }

                if(i<2 && j>0 && Math.abs(array[i][j]-array[i+1][j-1]) == 1){
                    return false;
                }
            }
        }
        return true;
    }

    private static int[][] change(Vector<Integer> result){

        int[][] newResult = new int[3][4];
        Vector<Integer> vector = new Vector<>();
        vector.add(-2);
        vector.addAll(result);
        vector.add(-2);

        for(int i=0;i<3;i++){
            for(int j=0;j<4;j++){
                newResult[i][j] = vector.elementAt(i*4+j);
            }
        }
        return newResult;
    }
    private static void fullPaiLie(Vector<Integer> source,Vector<Integer> result){
        if(source.size() == 0){
            int[][] array = change(result);
            if (check(array)) {
                count++;
            }
        }

        for(int i=0;i<source.size();i++){
            Vector<Integer> tsource = new Vector<>(source);
            Vector<Integer> tresult = new Vector<>(result);
            tresult.add(source.elementAt(i));
            tsource.remove(i);
            fullPaiLie(tsource,tresult);
        }
    }
    public static void main(String[] args){
        Vector<Integer> source = new Vector<>();
        Vector<Integer> result = new Vector<>();

        for(int i=0;i<10;i++){
            source.add(i);
        }
        fullPaiLie(source,result);
        System.out.println(count);
    }
}
